package com.brainshare.an.service;

import java.util.List;
import com.brainshare.an.domain.AnWechatUser;
import com.brainshare.system.domain.param.UserInfo1Param;
import com.brainshare.system.domain.param.UserInfo2Param;

import javax.servlet.http.HttpServletRequest;

/**
 * 用户数据Service接口
 * 
 * @author ruoyi
 * @date 2022-11-04
 */
public interface IAnWechatUserService 
{
    /**
     * 查询用户数据
     * 
     * @param wechatUserId 用户数据主键
     * @return 用户数据
     */
    public AnWechatUser selectAnWechatUserByWechatUserId(Long wechatUserId);

    public AnWechatUser selectAnWechatUserByOpenId(String openId);

    public AnWechatUser selectAnWechatUserByPhoneNumber(String phoneNumber);
    /**
     * 查询用户数据列表
     * 
     * @param anWechatUser 用户数据
     * @return 用户数据集合
     */
    public List<AnWechatUser> selectAnWechatUserList(AnWechatUser anWechatUser);

    /**
     * 新增用户数据
     * 
     * @param anWechatUser 用户数据
     * @return 结果
     */
    public int insertAnWechatUser(AnWechatUser anWechatUser);


    /**
     * 修改用户数据
     * 
     * @param anWechatUser 用户数据
     * @return 结果
     */
    public int updateAnWechatUser(AnWechatUser anWechatUser);

    /**
     * 更新用户信息和缓存信息
     * @param anWechatUser
     * @return
     */
    public boolean updateAnWechatUserInfo(AnWechatUser anWechatUser);

    /**
     * 使用用户ID更新用户信息
     * @param anWechatUserId
     * @return
     */
    public AnWechatUser updateAnWechatUserInfoById(Long anWechatUserId);

    /**
     * 批量删除用户数据
     * 
     * @param wechatUserIds 需要删除的用户数据主键集合
     * @return 结果
     */
    public int deleteAnWechatUserByWechatUserIds(Long[] wechatUserIds);

    /**
     * 删除用户数据信息
     * 
     * @param wechatUserId 用户数据主键
     * @return 结果
     */
    public int deleteAnWechatUserByWechatUserId(Long wechatUserId);

    /**
     * 调用发送短信验证码的方法
     * @return
     */
    public boolean SendSmsCode(String phone);

    /**
     * 手机验证码登录
     * @param phone 手机号
     * @param smsCode 短信验证码
     * @return
     */
    public String anWechatUserLogin(String phone, String smsCode, String mechanismId, String shareId);

    /**
     * 填写第1部分基础信息
     * @param request
     * @param userInfo1Param
     * @return
     */
    int addUserInfo1(HttpServletRequest request,UserInfo1Param userInfo1Param);

    /**
     * 填写第2部分基础信息
     * @param request
     * @param userInfo2Param
     * @return
     */
    int addUserInfo2(HttpServletRequest request,UserInfo2Param userInfo2Param);

    /**
     * 初始化用户
     * @param phone
     * @return
     */
    int initUser(HttpServletRequest request,String phone);

    /**
     * 会员重新登录清理缓存
     * @param request
     * @return
     */
    public boolean anWechatUserLoginOut(HttpServletRequest request);

    /**
     * 获取用户分享连接
     * @return
     */
    public String getAnWechatUserShareLink(AnWechatUser anWechatUser);
}
